package StreanmLearn;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.stream.Stream;

public class 初识Stream {
    public static void main(String[] args) {
        /*
        单列集合  default Stream<E> stream()  Collection中的默认方法
        双列集合  需要中转为单列集合之后才可以   无法直接使用
        数组   public static<T> Stream<T> of(T... values)  stream接口中的静态方法
        一堆零碎数据   public static<T> Strem<T> of(T...values)   Stream接口中的静态方法
         */

        //单列集合  default Stream<E> stream()  Collection中的默认方法
        单列集合();


        //双列集合  需要中转为单列集合之后才可以   无法直接使用
        双列集合();


        //数组   public static<T> Stream<T> of(T... values)  stream接口中的静态方法
        //创建数组
        int[] arr1={1,2,3,4,5,6};
        Arrays.stream(arr1).forEach(s-> System.out.println(s));


        //一堆零碎数据   public static<T> Strem<T> of(T...values)   Stream接口中的静态方法
        Stream.of(1,2,3,4,5).forEach(s-> System.out.println(s));

        Stream.of("1","2","3","4","5").forEach(s-> System.out.println(s));

    }

    public static void 双列集合() {
        //双列集合获取Stream流
        HashMap<String,Integer> hash=new HashMap<>();
        hash.put("aaa",111);
        hash.put("bbb",222);
        hash.put("ccc",333);
        hash.put("ddd",444);

        //方法1:
        //获取到一条流水线
        //利用keySet转换hash为单列集合
        hash.keySet().stream().forEach(s-> System.out.println(s));

        //方法2:
        //获取到一条流水线
        //利用entrySet转换hash为单列集合
        hash.entrySet().stream().forEach(s-> System.out.println(s));
    }

    //单列集合  default Stream<E> stream()  Collection中的默认方法
    public static void 单列集合() {
        //单列集合获取Stream流
        ArrayList<String> list=new ArrayList<>();
        Collections.addAll(list,"a","b","c","d","e","f");
//        //获取到一条流水线
//        Stream<String> stream1 = list.stream();
//        //使用终结方法打印一下流水线上的所有数据
//        stream1.forEach(new Consumer<String>() {
//            @Override
//            public void accept(String s) {
//                //s:依次表示流水线上的每一个数据
//                System.out.println(s);
//            }
//        });
        //简化结果为:
        list.stream().forEach(s-> System.out.println(s));
    }
}
